<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="elwiki_data" nsURI="http:///org/elwiki/data.ecore" nsPrefix="elwiki.data">
  <eClassifiers xsi:type="ecore:EClass" name="WikiPage" eSuperTypes="#//Comparable #//Cloneable">
    <eOperations name="compareTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="if (obj instanceof WikiPage) {&#xA;&#x9;WikiPage page = (WikiPage) obj;&#xA;&#x9;String obj1 = this.getName(), obj2 = page.getName();&#xA;&#x9;if (obj1 == null) {&#xA;&#x9;&#x9;return -1;&#xA;&#x9;}&#xA;&#x9;if (obj2 == null) {&#xA;&#x9;&#x9;return 1;&#xA;&#x9;}&#xA;&#x9;if (obj1.equals(obj2)) {&#xA;&#x9;&#x9;return 0;&#xA;&#x9;}&#xA;&#x9;&#x9;return obj1.compareTo(obj2);&#xA;}&#xA;return 0;"/>
      </eAnnotations>
      <eParameters name="obj" eType="#//Object"/>
    </eOperations>
    <eOperations name="clone" eType="#//Object">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="Object o = new Object(); // :FVK:&#xA;return o;&#xA;"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getFirstModifiedDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="Date firstModifiedDate;&#xA;&#xA;List&lt;PageContent> contents = new ArrayList&lt;>(this.getPageContents());&#xA;if (contents.size() > 0) {&#xA;&#x9;contents.sort(new Comparator&lt;PageContent>() {&#xA;&#x9;&#x9;@Override&#xA;&#x9;&#x9;public int compare(PageContent o1, PageContent o2) {&#xA;&#x9;&#x9;&#x9;Date date1 = o1.getCreationDate();&#xA;&#x9;&#x9;&#x9;Date date2 = o2.getCreationDate();&#xA;&#x9;&#x9;&#x9;if (date1 != null) {&#xA;&#x9;&#x9;&#x9;&#x9;if (date2 != null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;return date1.compareTo(date2);&#xA;&#x9;&#x9;&#x9;&#x9;return 1; // (date2 == null), then date1 > date2. &#xA;&#x9;&#x9;&#x9;} else if (date2 != null) {&#xA;&#x9;&#x9;&#x9;&#x9;return -1;&#xA;&#x9;&#x9;&#x9;}&#xA;&#xA;&#x9;&#x9;&#x9;return 0;&#xA;&#x9;&#x9;}&#xA;&#x9;});&#xA;&#x9;firstModifiedDate = contents.get(0).getCreationDate();&#xA;} else {&#xA;&#x9;firstModifiedDate = new GregorianCalendar(1972, 2, 12).getTime(); //:FVK: workaround.&#xA;}&#xA;&#xA;return firstModifiedDate;"/>
        <details key="documentation" value="Returns: modify date of last item of pagecontents reference, or 12.02.1972."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getLastModifiedDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="Date lastModifiedDate;&#xA;&#xA;List&lt;PageContent> contents = new ArrayList&lt;>(this.getPageContents());&#xA;if (contents.size() > 0) {&#xA;&#x9;contents.sort(new Comparator&lt;PageContent>() {&#xA;&#x9;&#x9;@Override&#xA;&#x9;&#x9;public int compare(PageContent o1, PageContent o2) {&#xA;&#x9;&#x9;&#x9;Date date1 = o1.getCreationDate();&#xA;&#x9;&#x9;&#x9;Date date2 = o2.getCreationDate();&#xA;&#x9;&#x9;&#x9;if (date1 != null) {&#xA;&#x9;&#x9;&#x9;&#x9;if (date2 != null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;return date1.compareTo(date2);&#xA;&#x9;&#x9;&#x9;&#x9;return 1; // (date2 == null), then date1 > date2. &#xA;&#x9;&#x9;&#x9;} else if (date2 != null) {&#xA;&#x9;&#x9;&#x9;&#x9;return -1;&#xA;&#x9;&#x9;&#x9;}&#xA;&#xA;&#x9;&#x9;&#x9;return 0;&#xA;&#x9;&#x9;}&#xA;&#x9;});&#xA;&#x9;lastModifiedDate = contents.get(contents.size() - 1).getCreationDate();&#xA;} else {&#xA;&#x9;lastModifiedDate = new GregorianCalendar(1972, 2, 12).getTime(); //:FVK: workaround.&#xA;}&#xA;&#xA;return lastModifiedDate;"/>
        <details key="documentation" value="Returns: modify date of last item of pagecontents reference, or 12.02.1972."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getAuthor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="PageContent content = getLastContent();&#xA;return (content != null) ? content.getAuthor() : &quot;&quot;;"/>
        <details key="documentation" value="Returns: author of last item of pagecontents reference, or empty string."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getFirstContent" eType="#//PageContent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="PageContent result = null;&#xA;int version = Integer.MAX_VALUE;&#xA;EList&lt;PageContent> attachContents = getPageContents();&#xA;for (PageContent pageContent : attachContents) {&#xA;&#x9;int contentVersion = pageContent.getVersion();&#xA;&#x9;if (version > contentVersion) {&#xA;&#x9;&#x9;version = contentVersion;&#xA;&#x9;&#x9;result = pageContent;&#xA;&#x9;}&#xA;}&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns the item of  first version from page content elements.&#xA;&lt;/br>Can be NULL."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getLastContent" eType="#//PageContent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="PageContent result = null;&#xA;int version = 0;&#xA;EList&lt;PageContent> pageContents = getPageContents();&#xA;for (PageContent pageContent : pageContents) {&#xA;&#x9;int contentVersion = pageContent.getVersion();&#xA;&#x9;if (version &lt; contentVersion) {&#xA;&#x9;&#x9;version = contentVersion;&#xA;&#x9;&#x9;result = pageContent;&#xA;&#x9;}&#xA;}&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns an instance of PageContent, of the latest version.&#xA;&lt;/br>Can be NULL."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getLastVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="PageContent content = getLastContent();&#xA;return (content != null) ? content.getVersion() : 0;"/>
        <details key="documentation" value="Returns the latest version of item from page content elements.&#xA;&lt;/br>Can be 0, if no content."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getAttribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return getAttributes().get(name);"/>
        <details key="documentation" value="Returns required attribute by name."/>
      </eAnnotations>
      <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eOperations>
    <eOperations name="setAttribute">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="getAttributes().put( name, value );"/>
        <details key="documentation" value="Save given attribute by name."/>
      </eAnnotations>
      <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
    </eOperations>
    <eOperations name="isInternalPage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="String pageId = this.getId();&#xA;return (pageId.startsWith(&quot;w&quot;))? true : false;"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getPageContentsReversed" eType="#//ListPageContent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="List&lt;PageContent> contents = new ArrayList&lt;>(this.getPageContents());&#xA;contents.sort(Comparator.comparing(PageContent::getVersion, Comparator.reverseOrder()));&#xA;&#xA;return contents;"/>
        <details key="documentation" value="PageContents are reversy sorted by version."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="toString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return super.toString() + &quot; &quot; + getId() + &quot;:&quot; + getName();"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getContentText" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="String result = &quot;&quot;;&#xA;if (version == IWikiConstants.LATEST_VERSION) {&#xA;&#x9;PageContent lastContent = getLastContent();&#xA;&#x9;if (lastContent != null) {&#xA;&#x9;&#x9;result = lastContent.getContent();&#xA;&#x9;}&#xA;} else {&#xA;&#x9;EList&lt;PageContent> pageContents = getPageContents();&#xA;&#x9;for (PageContent pageContent : pageContents) {&#xA;&#x9;&#x9;if (version == pageContent.getVersion()) {&#xA;&#x9;&#x9;&#x9;result = pageContent.getContent();&#xA;&#x9;&#x9;&#x9;break;&#xA;&#x9;&#x9;}&#xA;&#x9;}&#xA;}&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns the content text for the specified version.&#xA;You can specify a requirement for the latest version&#xA;by setting the constant IWikiConstants.LATEST_VERSION.&#xA;&lt;/br>&#xA;If specified version is not found, an empty string is returned."/>
      </eAnnotations>
      <eParameters name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eOperations>
    <eOperations name="getContentText" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="String result = &quot;&quot;;&#xA;PageContent lastContent = getLastContent();&#xA;if (lastContent != null) {&#xA;&#x9;result = lastContent.getContent();&#xA;}&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns the content text of last version.&lt;br/>If there is no specified version, an empty string is returned."/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Id&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Name&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Description&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Alias&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="redirect" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Redirect&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>View Count&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pageContents" upperBound="-1"
        eType="#//PageContent" containment="true" eOpposite="#//PageContent/wikipage">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Pagecontents&lt;/em>' containment reference list isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="attachments" upperBound="-1"
        eType="#//PageAttachment" containment="true" eOpposite="#//PageAttachment/wikipage">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Attachments&lt;/em>' containment reference list isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="wiki" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Wiki&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//WikiPage" containment="true" eOpposite="#//WikiPage/parent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Children&lt;/em>' containment reference list isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//WikiPage"
        eOpposite="#//WikiPage/children">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Parent&lt;/em>' container reference isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="oldParents" eType="#//ArrayString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Old Parents&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pageReferences" upperBound="-1"
        eType="#//PageReference" containment="true" eOpposite="#//PageReference/wikipage">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Page References&lt;/em>' containment reference list isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="webLog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        defaultValueLiteral="false"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
        eType="#//StringToObjectMap" containment="true" eKeys="#//StringToObjectMap/key"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="unknownPages" upperBound="-1"
        eType="#//UnknownPage" containment="true" eOpposite="#//UnknownPage/wikipage"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tags" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pageAcl" upperBound="-1"
        eType="#//PageAclEntry" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="comments" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PagesStore">
    <eStructuralFeatures xsi:type="ecore:EReference" name="wikipages" upperBound="-1"
        eType="#//WikiPage" containment="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Wikipages&lt;/em>' containment reference list isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mainPageId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Main Page Id&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nextPageId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Next Page Id&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nextAttachmentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="0"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="tagslist" upperBound="-1"
        eType="#//TagsList" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PageContent" eSuperTypes="#//IHistoryInfo">
    <eOperations name="getLength" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return getContent().length();"/>
        <details key="documentation" value="Returns length of content."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="isFirstContent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="int myVersion = getVersion();&#xA;for (PageContent pc : getWikipage().getPageContents()) {&#xA;&#x9;if (myVersion > pc.getVersion())&#xA;&#x9;&#x9;return false;&#xA;}&#xA;return true;"/>
        <details key="documentation" value="Returns status: Is this content the lowest version?"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/CDO/DBStore">
        <details key="columnType" value="VARCHAR"/>
        <details key="columnLength" value="10000000"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Content&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wikipage" eType="#//WikiPage"
        eOpposite="#//WikiPage/pageContents">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Wikipage&lt;/em>' container reference isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PageAttachment">
    <eOperations name="forLastContent" eType="#//AttachmentContent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="AttachmentContent result = null;&#xA;int version = 0;&#xA;EList&lt;AttachmentContent> attachContents = getAttachContents();&#xA;for (AttachmentContent attContent : attachContents) {&#xA;&#x9;int contentVersion = attContent.getVersion();&#xA;&#x9;if (version &lt; contentVersion) {&#xA;&#x9;&#x9;version = contentVersion;&#xA;&#x9;&#x9;result = attContent;&#xA;&#x9;}&#xA;}&#xA;&#xA;if (result == null)&#xA;&#x9;return Elwiki_dataFactoryImpl.eINSTANCE.createAttachmentContent();&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns last item of attachContents reference. And set reference of AttachmentContent.\n&lt;/br>Can be NULL."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="forVersionContent" eType="#//AttachmentContent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="AttachmentContent result = null;&#xA;EList&lt;AttachmentContent> attachContents = getAttachContents();&#xA;for (AttachmentContent attContent : attachContents) {&#xA;&#x9;if (desiredVersion == attContent.getVersion()) {&#xA;&#x9;&#x9;result = attContent;&#xA;&#x9;&#x9;break;&#xA;&#x9;}&#xA;}&#xA;&#xA;return result;"/>
        <details key="documentation" value="Returns item of attachContents reference for required version. And set reference of AttachmentContent.\n&lt;/br>Can be NULL."/>
      </eAnnotations>
      <eParameters name="desiredVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Id&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Name&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
        defaultValueLiteral="0"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wikipage" eType="#//WikiPage"
        eOpposite="#//WikiPage/attachments">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Wikipage&lt;/em>' container reference isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="attachContents" upperBound="-1"
        eType="#//AttachmentContent" containment="true" eOpposite="#//AttachmentContent/pageAttachment"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AttachmentContent" eSuperTypes="#//IHistoryInfo">
    <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return getPageAttachment.getName();"/>
        <details key="documentation" value="Returns the name of the PageAttachment that owns this instance."/>
      </eAnnotations>
    </eOperations>
    <eOperations name="toString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return super.toString() + &quot; &quot; + getName() + &quot;:&quot; + getVersion();"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="place" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Place&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"
        defaultValueLiteral="0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Size&lt;/em>' attribute isn't clear,&#xA; there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pageAttachment" eType="#//PageAttachment"
        eOpposite="#//PageAttachment/attachContents"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Object" instanceClassName="java.lang.Object"
      abstract="true" interface="true"/>
  <eClassifiers xsi:type="ecore:EClass" name="Comparable" instanceClassName="java.lang.Comparable">
    <eOperations name="compareTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="Assert.isTrue(false, &quot;:FVK: Code of compareTo must be implemented.&quot;);&#xA;return 0;"/>
      </eAnnotations>
      <eParameters name="obj" eType="#//Object"/>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Cloneable" instanceClassName="java.lang.Cloneable">
    <eOperations name="clone" eType="#//Object">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="Assert.isTrue(false, &quot;:FVK: Code of clone must be implemented.&quot;);&#xA;Object o = new Object();&#xA;return o;&#xA;"/>
      </eAnnotations>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IHistoryInfo" abstract="true" interface="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Version&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="creationDate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Last Modify&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="author" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Author&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeNote" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Change Note&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PageReference">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Page Id&lt;/em>' attribute isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wikipage" eType="#//WikiPage"
        eOpposite="#//WikiPage/pageReferences">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xA;If the meaning of the '&lt;em>Wikipage&lt;/em>' container reference isn't clear,&#xA;there really should be more of a description here...&#xA;&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="StringToObjectMap" instanceClassName="java.util.Map$Entry">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EDataType" name="ArrayString" instanceClassName="java.lang.String[]"/>
  <eClassifiers xsi:type="ecore:EDataType" name="AccessList" instanceTypeName="newDataType3"/>
  <eClassifiers xsi:type="ecore:EDataType" name="ListPageContent" instanceTypeName="java.util.List&lt;org.elwiki_data.PageContent>"/>
  <eClassifiers xsi:type="ecore:EClass" name="UnknownPage">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wikipage" eType="#//WikiPage"
        eOpposite="#//WikiPage/unknownPages"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="TagsList">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tag" ordered="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PageAclEntry">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="allow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        defaultValueLiteral="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="permission" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="roles" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
</ecore:EPackage>
